package com.io.preferences;

import java.io.FileOutputStream;
import java.util.prefs.Preferences;

/**
 * 如果是Windows平台下，也可能会保存到系统注册表中。从JDK
 * 1.4开始，Java在java.util下加入了一个专门处理用户和系统配置信息的java.
 * util.prefs包，其中一个类Preferences是一种比较
 * “高级”的玩意。从本质上讲，Preferences本身是一个与平台无关的东西，但不同的OS对它的SPI（Service Provider
 * Interface）的实现却是与平台相关的，因此，在不同的系统中你可能看到首选项保存为本地文件、LDAP目录项、数据库条目等，像在Windows平台下，
 * 它就保存到了系统注册表中，Linux中它存在于用户目录下的一个隐藏文件中。不仅如此，你还可以把首选项导出为XML文件或从XML文件导入。
 * 
 * @author Administrator
 * 
 */
public class Demo {
	private Preferences prefs;

	public void setPreference() {
		// This will define a node in which the preferences can be stored
		prefs = Preferences.userRoot().node("fanfu");
		String ID1 = "Test1";
		String ID2 = "Test2";
		String ID3 = "Test3";

		prefs.remove(ID1);
		prefs.remove(ID2);
		prefs.remove(ID3);
		// First we will get the values
		// Define a boolean value
		System.out.println(prefs.getBoolean(ID1, true));
		// Define a string with default "Hello World
		System.out.println(prefs.get(ID2, "Hello World"));
		// Define a integer with default 50
		System.out.println(prefs.getInt(ID3, 50));

		// Now set the values
		prefs.putBoolean(ID1, false);
		prefs.put(ID2, "Hello Europa");
		prefs.putInt(ID3, 45);
		System.out.println("------------------------------");
		System.out.println(prefs.getBoolean(ID1, true));
		System.out.println(prefs.get(ID2, "Hello World"));
		System.out.println(prefs.getInt(ID3, 50));
		// Delete the preference settings for the first value
		prefs.remove(ID1);
		System.out.println("------------------------------");
		System.out.println(prefs.getBoolean(ID1, true));
		System.out.println(prefs.get(ID2, "Hello World"));
		System.out.println(prefs.getInt(ID3, 50));
	}

	public static void main(String[] args) throws Exception {
		Demo test = new Demo();
		test.setPreference();
		
		System.out.println("------------------------------");
		for (String key : test.prefs.keys()) {
			System.out.println(test.prefs.get(key, null));
		}
		FileOutputStream out = new FileOutputStream("out2.xml");
		test.prefs.exportNode(out);

	}
}
